package com.eastfair.projectcore.dto;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.eastfair.core.base.entity.Entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import com.eastfair.core.base.entity.SuperEntity;
import lombok.Data;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
import com.eastfair.projectcore.enumeration.AppMenuMenuTypeEnum;
import java.io.Serializable;

/**
 * <p>
 * 实体类
 * 前端菜单（之所以分开是因为避免指定上级菜单出错）
 * </p>
 *
 * @author ligang
 * @since 2021-10-28
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = false)
@Builder
@ApiModel(value = "AppMenuUpdateDTO", description = "前端菜单（之所以分开是因为避免指定上级菜单出错）")
public class AppMenuUpdateDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "主键")
    @NotNull(message = "请填写主键", groups = SuperEntity.Update.class)
    private Long id;

    /**
     * 菜单名称
     */
    @ApiModelProperty(value = "菜单名称")
    @Size(max = 255, message = "菜单名称长度不能超过255")
    private String name;
    /**
     * 菜单名称（英文）
     */
    @ApiModelProperty(value = "菜单名称（英文）")
    @Size(max = 255, message = "菜单名称（英文）长度不能超过255")
    private String enName;
    /**
     * code码
     */
    @ApiModelProperty(value = "code码")
    @NotEmpty(message = "请填写code码")
    @Size(max = 255, message = "code码长度不能超过255")
    private String code;
    /**
     * 菜单类型 #{catalog:目录;menu:菜单;button:按钮}
     */
    @ApiModelProperty(value = "菜单类型 #{catalog:目录;menu:菜单;button:按钮}")
    private AppMenuMenuTypeEnum menuType;
    /**
     * 值例如：www.baidu  / 内联地址，内链则是前端用的路由地址
     */
    @ApiModelProperty(value = "值例如：www.baidu  / 内联地址，内链则是前端用的路由地址")
    @Size(max = 255, message = "值例如：www.baidu  / 内联地址，内链则是前端用的路由地址长度不能超过255")
    private String link;
    /**
     * 路由参数
     */
    @ApiModelProperty(value = "路由参数")
    @Size(max = 255, message = "路由参数长度不能超过255")
    private String linkParam;
    /**
     * 组件路径,前端资源路径，给前端用的
     */
    @ApiModelProperty(value = "组件路径,前端资源路径，给前端用的")
    @Size(max = 255, message = "组件路径,前端资源路径，给前端用的长度不能超过255")
    private String moduleUrl;
    /**
     * 权限字符
     */
    @ApiModelProperty(value = "权限字符")
    @Size(max = 255, message = "权限字符长度不能超过255")
    private String permission;
    /**
     * icon
     */
    @ApiModelProperty(value = "icon")
    @Size(max = 255, message = "icon长度不能超过255")
    private String icon;
    /**
     * 排序
     */
    @ApiModelProperty(value = "排序")
    private Integer sequence;
    /**
     * 父级id
     */
    @ApiModelProperty(value = "父级id")
    @NotNull(message = "请填写父级id")
    private Long parentId;
    /**
     * 是否外链(默认1：是 0:否)
     */
    @ApiModelProperty(value = "是否外链(默认1：是 0:否)")
    private Integer isOutLink;
    /**
     * 是否显示(默认1：是 0:否)
     */
    @ApiModelProperty(value = "是否显示(默认1：是 0:否)")
    private Integer isShow;
    /**
     * 是否生效(默认1：可用 0:不可用)
     */
    @ApiModelProperty(value = "是否生效(默认1：可用 0:不可用)")
    private Integer isEnabled;
    /**
     * 是否删除(默认0：未删除 1:已删除)
     */
    @ApiModelProperty(value = "是否删除(默认0：未删除 1:已删除)")
    private Integer isDeleted;
}
